![SAM CLIのInit時にLambda関数のX-Rayトレースを有効化出来るようになりました](https://devio2023-media.developers.io/wp-content/uploads/2018/11/eyecatch_aws-x-ray_1200x630.jpeg)
SAM CLIのInit時にLambda関数のX-Rayトレースを有効化出来るようになりました
いわさです。
本日のアップデートでSAM CLIでのX-Ray有効化がサポートされました。
X-Rayの有効化自体はSAMではこれまでも対応されていましたが、今回のアップデートで何が変わったのでしょうか。
本日は使い方などを確認してみましたので紹介します。
SAM CLI v1.48以降で使える
sam init
に--tracing
と--no-tracing
オプションが追加されました。
SAM CLIのv1.48から利用出来るようになっています。
$ sam --version SAM CLI, version 1.48.0 $ sam init -h Usage: sam init [OPTIONS] : --tracing / --no-tracing Enable AWS X-Ray tracing for your lambda functions :
こちらを使うと何が起こるのかを確認してみましょう。
使ってみる
--tracingオプションを指定
$ sam init --tracing You can preselect a particular runtime or package type when using the `sam init` experience. Call `sam init --help` to learn more. Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice: 1 :
デプロイされたテンプレートを確認してみましょう。
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: > hoge Sample SAM Template for hoge2 # More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst Globals: Function: Timeout: 3 Tracing: Active Resources: HelloWorldFunction: Type: AWS::Serverless::Function # More info about Function Resource: https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction Properties: CodeUri: hello-world/ Handler: app.lambdaHandler Runtime: nodejs14.x Architectures: - x86_64 :
グローバルパラメータのTracing
がActive
になっていますね。
Tracing
パラメータ自体は以前から利用出来ていました。
今回のアップデートでは、sam init
で、このTracing
パラメータを初期設定する機能を指しているようです。
グローバルパラメータによってこのテンプレート内のFunctionリソースのTracingがActiveとなります。
--no-tracingオプションを指定
次は、--no-tracing
オプションを指定してみましょう。
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: > hoge Sample SAM Template for hoge2 # More info about Globals: https://github.com/awslabs/serverless-application-model/blob/master/docs/globals.rst Globals: Function: Timeout: 3 Resources:
--no-tracing
指定時はTracing
が未設定となります。
ちなみに両方指定出来るのですが、どちらも指定した場合は後勝ちでした。(sam init --tracing --no-tracing
であれば設定されない)
指定しない
sam-init
の必須パラメータではないので省略が出来ます。
省略時の動作は以下のようになります。
$ sam init You can preselect a particular runtime or package type when using the `sam init` experience. Call `sam init --help` to learn more. Which template source would you like to use? 1 - AWS Quick Start Templates 2 - Custom Template Location Choice: 1 : Would you like to enable X-Ray tracing on the function(s) in your application? [y/N]: y X-Ray will incur an additional cost. View https://aws.amazon.com/xray/pricing/ for more details Project name [sam-app]:
有効化するか、無効化するかを聞かれますね。
X-Rayを利用することによる追加コストについても注意書きされています。
デプロイする
今回のアップデートとしてここまでで、あとは今までどおりTracingオプションによってデプロイされたリソースのX-Rayが有効化されます。
デプロイしてみましょう。
Lambda関数のX-Rayアクティブトレースが有効化されていますね。
さいごに
なお、API Gatewayについては有効化されていません。
API GatewayのX-Rayトレースを有効化したい場合はApi
->TracingEnabled
もTrueにする必要があります。
CLIのオプションの説明文には以下のようにあるので、Lambda関数に絞った有効化機能のようですね。
Enable AWS X-Ray tracing for your lambda functions
API Gatewayも有効化したい場合
API Gatewayのトレースも有効化したい場合は、上記ブログを参考に以下のようにApi->TracingEnabledを手動で追加すると有効化されます。
: Globals: Function: Timeout: 3 Tracing: Active Api: TracingEnabled: True :